package com.pactera.madp.cp.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.pactera.madp.cp.api.dto.moment.MomentDetailsTendencyDTO;
import com.pactera.madp.cp.api.dto.moment.MomentDto;
import com.pactera.madp.cp.api.dto.moment.MomentTask;
import com.pactera.madp.cp.api.vo.moment.MomentStaticsTendencyVO;
import com.pactera.madp.cp.api.vo.moment.MomentStatisticsDataVO;
import com.pactera.madp.cp.api.vo.moment.MomentVo;

import java.util.List;

public interface MomentService {

    Page<MomentVo> selectByCondition(Integer pageNumber, Integer pageSize, MomentDto dto);

    Page<MomentTask> task(MomentDto dto, Page page);

    List<MomentVo> getAllMomentVos();

    /**
     * 获取朋友圈统计信息
     * @param deptId
     * @param wxDeptId
     * @param allMomentVos
     * @return 返回朋友圈(按照部门统计)信息
     */
    MomentStatisticsDataVO getStatisticsDatas(Integer deptId, Integer wxDeptId,List<MomentVo> allMomentVos);

    /**
     * 获取朋友圈统计信息
     * @param mobile
     * @param allMomentVos
     * @return 返回朋友圈(按照员工统计)信息
     */
    MomentStatisticsDataVO getStatisticsDatas(String mobile,List<MomentVo> allMomentVos);

    /**
     * 朋友圈总数趋势
     * @param dto
     * @return 返回时间范围内的朋友圈总数列表
     */
    List<MomentStaticsTendencyVO> getMomentTotalCount(MomentDetailsTendencyDTO dto);

    /**
     * 企业朋友圈数趋势
     * @param dto
     * @return 返回时间范围内的企业朋友圈数列表
     */
    List<MomentStaticsTendencyVO> getEnterpriseMomentCount(MomentDetailsTendencyDTO dto);

    /**
     * 个人朋友圈数趋势
     * @param dto
     * @return 返回时间范围内的个人朋友圈数列表
     */
    List<MomentStaticsTendencyVO> getPersonalMomentCount(MomentDetailsTendencyDTO dto);

    /**
     * 点赞数趋势
     * @param dto
     * @return 返回时间范围内的点赞数列表
     */
    List<MomentStaticsTendencyVO> getLikesCount(MomentDetailsTendencyDTO dto);

    /**
     * 评论数趋势
     * @param dto
     * @return 返回时间范围内的评论数列表
     */
    List<MomentStaticsTendencyVO> getCommentsCount(MomentDetailsTendencyDTO dto);

    /**
     * 成员数趋势
     * @param dto
     * @return 返回时间范围内的成员数列表
     */
    List<MomentStaticsTendencyVO> getEmployeeCount(MomentDetailsTendencyDTO dto);

}
